10 REM COPYRIGHT 1988 COMPUTE! PUBLICATIONS, INC. - ALL RIGHTS RESERVED 20 PRINT"[147][208]LEASE WAIT...":GOSUB2220:GOTO820 30 PRINT"[147]":GOSUB2220:GOTO820 40 REM DRAW SCREEN 50 REM GIVEN C=CHAR #, CH=ADDR OF CHAR 60 GOSUB260:IFFL%(C)THENGOSUB210:GOSUB320:GOTO80 70 GOSUB240:GOSUB290 80 REM ENTRY W/O GRID 90 PRINTVT$(16)TAB(14)"[152]<--[213]" 100 PRINT""TAB(16)"[211]PEED[208]RINT [198]ONT [197]DITOR" 110 PRINTTAB(20)"[152][195]OPYRIGHT 1988":PRINTTAB(16)"[195][207][205][208][213][212][197]! [208]UBLICATIONS" 120 PRINTTAB(17)"[193]LL [210]IGHTS [210]ESERVED" 130 PRINTVT$(8)T$"[155]--- [195]OMMANDS ---":PRINTT$"" 140 PRINTT$"<[210][197][212][213][210][206]><[200][207][205][197]><[195][204][210]>":PRINTT$"<[211][208][195]>[152] TOGGLE PIXEL" 150 PRINTT$"+[152] NEXT CHAR":PRINTT$"-[152] PREV CHAR" 160 PRINTT$"SHFT +[152] NEXT ENTRY":PRINTT$"SHFT -[152] PREV ENTRY" 170 PRINTT$"[208][152]RINT CURRENT CHAR":PRINTT$"SHFT [208][152] PRINT STRING" 180 PRINTT$"[199][152]OTO [195][152]OPY":PRINTT$"[204][152]OAD [211][152]AVE" 190 PRINTT$"[201][152]NCLUDE [197][152]XCLUDE":PRINTT$"[193][152][211][195][201][201] [209][152]UIT" 200 RETURN 210 REM DRAW GRID 220 PRINTCO$(0)""BO$ 230 FORI=0TO2:PRINTCO$(I);:FORJ=1TO7:PRINTLI$:NEXT:NEXT:PRINTBO$:RETURN 240 REM ERASE GRID 250 PRINT"";:FORI=1TO23:PRINT" ":NEXT:RETURN 260 REM UPDATE CHAR DISPLAY 270 PRINTVT$(3)TAB(15)"[195]HAR: "QU$CHR$(C)QU$ 280 PRINTVT$(3)TAB(25)"= [195][200][210]$("C"[157] ) ":RETURN 290 REM NOT ALTERED MESSAGE 300 PRINTVT$(9)"[155] *[195]HARACTER *":PRINT" * [206]OT IN *":PRINT" *[193]LTERATION*" 310 PRINT" * [204]IST *":RETURN 320 REM MEM TO GRID 330 REM GIVEN CH=ADDR OF CHAR 340 AD=CH:Y=0 350 GOSUB420 360 FORY=0TO14STEP7 370 FORX=0TO5:BY=PEEK(AD+X):IFBY=0THEN400 380 BI=1:FORYY=0TO6:IFBIANDBYTHENPRINTVT$(Y+YY)TAB(FNHT(X))CO$(Y/7)" [146]" 390 BI=BI*2:NEXTYY 400 NEXTX:AD=AD+6:NEXTY 410 GOSUB440:RETURN 420 REM WAIT 430 POKESO,0:PRINTVT$(9)"******":PRINT" WAIT ":PRINT"******":RETURN 440 REM END WAIT 450 PRINTVT$(9)" ":PRINT" ":PRINT" ":RETURN 460 REM TOGGLE PIXEL 470 REM GIVEN SET=0/1: CLR/SET, X,Y=CO-ORDS, CH=ADDR OF CHAR 480 BY=CH+INT(Y/7)*6+X:BI=2^(Y-INT(Y/7)*7):SET=1+((PEEK(BY)ANDBI)>0) 490 PRINTVT$(Y)TAB(FNHT(X))CO$(Y/7)SET$(SET); 500 POKEBY,(PEEK(BY)AND255-BI)ORBI*SET 510 RETURN 520 REM PRINT STRING 530 REM GIVEN MS$=STRING 540 OPEN1,4,7:FORI=0TO2 550 FORI=0TO2:FORJ=0TO1:MO=-(I=2ANDJ=1):PRINT#1,PB$;:FORK=1TOLEN(MS$) 560 A=ASC(MID$(MS$,K,1)):M=ME+A*18:IFFL%(A)THEN600 570 IFI<>1ANDMO=0THENPRINT#1,TX$" ";:GOTO610 580 IFI=1THENPRINT#1,TX$CHR$(A);:GOTO610 590 PRINT#1,HR$CHR$(26)CHR$(6)CHR$(132);:GOTO610 600 PRINT#1,HR$;:FORL=0TO5:PRINT#1,CHR$(PEEK(M+I*6+L)OR128OR4*MO);:NEXT 610 NEXT:NEXT:PRINT#1,HR$CR$TX$;:NEXT:CLOSE1:RETURN 620 REM INQUIRE 630 REM GIVEN MS$=MESSAGE 640 POKESO,0:FORI=1TO10:GETA$:NEXT:IFM2$=""THENMS$=MS$+" (Y/N)?":GOTO660 650 M2$=M2$+" (Y/N)?" 660 PRINT""VT$(5)TAB(15)MS$:PRINT""TAB(15)M2$ 670 GETA$:IFA$<>"Y"ANDA$<>"N"THEN670 680 PRINTTAB(15)"[145][145]"BL$""TAB(15)BL$:M2$="":RETURN 690 REM MESSAGE 700 REM GIVEN MS$,M2$=MESSAGE 710 POKESO,0:PRINT""VT$(5)TAB(15)MS$:PRINTTAB(15)M2$ 720 FORI=1TO2500:NEXT:M2$="":PRINT"[145][145]"TAB(15)BL$""TAB(15)BL$:RETURN 730 REM SET CURSOR 740 POKEVIC,CX*8+72:POKEVIC+1,CY*8+59:POKESO,1 750 REM GET COMMAND 760 POKESO,1:POKESC,PEEK(SC)-1:GETA$:IFA$=""THEN760 770 IFA$=CR$THEN960 780 FORI=1TO21:IFA$<>MID$("[145][157] +-[219][221]GIEPQ[147]CLS[208]A",I,1)THENNEXT:GOTO760 790 ON I GOTO840,870,900,930,980,1000,1050,1100,1150,1200 800 ON I-10 GOTO1240,1270,1290,1340,1370,1400,1420,1490,1740,2130 810 ON I-20GOTO2180 820 REM CLR AND CONT 830 PRINT"[147]":GOSUB40:GOTO730 840 REM UP 850 CY=CY-1:IFCY<0THENCY=20 860 GOTO730 870 REM DOWN 880 CY=CY+1:IFCY>20THENCY=0 890 GOTO730 900 REM LEFT 910 CX=CX-1:IFCX<0THENCX=5 920 GOTO730 930 REM RIGHT 940 CX=CX+1:IFCX>5THENCX=0 950 GOTO730 960 REM RETURN 970 CX=0:GOTO870 980 REM TOGGLE 990 X=CX:Y=CY:GOSUB460:GOTO750 1000 REM + 1010 GOSUB240 1020 C=C+1:IFC>255THENC=32 1030 GOSUB260:CH=ME+C*18:GETA$:IFA$="+"THEN1020 1040 GOSUB40:GOTO750 1050 REM - 1060 GOSUB240 1070 C=C-1:IFC<32THENC=255 1080 GOSUB260:CH=ME+C*18:GETA$:IFA$="-"THEN1070 1090 GOSUB40:GOTO750 1100 REM SHFT + 1110 J=C:GOSUB240:GOSUB420 1120 C=C+1:IFC>255THENC=32 1130 IFFL%(C)=0ANDC<>JTHEN1120 1140 CH=ME+C*18:GOSUB40:GOTO750 1150 REM SHFT - 1160 J=C:GOSUB240:GOSUB420 1170 C=C-1:IFC<32THENC=255 1180 IFFL%(C)=0ANDC<>JTHEN1170 1190 GOTO1140 1200 REM GOTO 1210 POKESO,0:INPUT"[147][199]OTO [215]HICH [193][211][195][201][201] [195]ODE";A 1220 IFA>31ANDA<256THENC=A:CH=ME+18*C 1230 GOTO820 1240 REM INCLUDE 1250 FL%(C)=1 1260 GOSUB40:GOTO750 1270 REM EXCLUDE 1280 FL%(C)=0:GOTO1260 1290 REM P 1300 IFFL%(C)=0THEN750 1310 MS$="[208]RINT [212]HIS [195]HAR":GOSUB620 1320 IFA$="Y"THENMS$=" "+CHR$(C)+" ":GOSUB520 1330 GOTO750 1340 REM QUIT 1350 MS$="[209]UIT [208]ROGRAM":GOSUB620:IFA$="Y"THENPRINT"[147][155] [194]YE.":POKESO,0:END 1360 GOTO750 1370 REM CLR 1380 MS$="[195]LEAR [195]HAR":GOSUB620:IFA$="N"THEN750 1390 FORI=CHTOCH+17:POKEI,0:NEXT:GOSUB40:GOTO750 1400 REM HOME 1410 CX=0:CY=0:GOTO730 1420 REM COPY 1430 POKESO,0:PRINT"[147][195]OPY THIS [195]HARACTER TO [215]HICH [193][211][195][201][201]":A=0 1440 INPUT" [195]HARACTER";A:IFA>255ORA<32ORA=CTHEN820 1450 OC=C:C=A:C2=CH:CH=ME+18*C:PRINT"[147]":GOSUB40 1460 MS$="[210]EPLACE WITH"+STR$(OC):GOSUB620 1470 IFA$="N"THENC=OC:CH=C2:MS$="** [195]ANCELLED **":GOSUB690:GOTO820 1480 FORI=0TO17:POKECH+I,PEEK(C2+I):NEXT:GOSUB40:GOTO750 1490 REM LOAD 1500 MS$="[204]OAD":GOSUB1630:IFFL=1THEN820 1510 F2%=0:OPEN15,8,15:OPEN1,8,3,FI$:GOSUB2040:IFFLTHEN820 1520 GOSUB240:GOSUB420:GOSUB2430:GET#1,A$,A$,A$,A$:S=0 1530 GET#1,A$:IFA$=""THEN1550 1540 S=S+1:O%(S)=ASC(A$+C0$):GET#1,A$:GOTO1530 1550 IFS=0THEN65535 1560 FORI=1TOS 1570 PRINTW$;W$(IAND3);:CC=O%(I):FL%(CC)=1:M=ME+CC*18:FORJ=0TO2:GET#1,A$ 1580 IFA$=CHR$(255)THENFORK=0TO5:POKEM+K,0:NEXT:GOTO1600 1590 POKEM,ASC(A$+C0$):FORK=1TO5:GET#1,A$:POKEM+K,ASC(A$+C0$):NEXT 1600 M=M+6:NEXT:NEXT 1610 GOSUB80:GOSUB2040:IFFL=0THENCLOSE1:CLOSE15:MS$="[198]INISHED.":GOSUB690 1620 C=32:GOTO1100 1630 REM FILENAME 1640 REM GIVEN MS$=MESSAGE 1650 REM RETURNS FI$=FILENAME, FL=1 IF ERROR 1660 PRINT"[147]"MS$":":FL=0:FI$="":INPUT"[198]ILENAME";FI$ 1670 IFLEFT$(FI$,4)="FONT"ANDMID$(FI$,7,1)="/"THEN1700 1680 INPUT"2-CHARACTER ABBREVIATION";A$:IFLEN(A$)<>2THEN1680 1690 FI$="FONT"+A$+"/"+FI$ 1700 PRINT"[147]":GOSUB80 1710 IFLEN(FI$)>15THENMS$="[198]ILENAME TOO LONG.":GOSUB690:FL=1:RETURN 1720 MS$=MS$+" WITH [206]AME:":M2$=QU$+FI$+QU$:GOSUB620:IFA$="N"THENFL=1 1730 RETURN 1740 REM SAVE 1750 MS$="[211]AVE":GOSUB1630:IFFL=1THEN820 1760 OPEN15,8,15 1770 OPEN1,8,3,FI$+",W,P":INPUT#15,A$,B$,C$,D$:A=VAL(A$) 1780 IFA<>63THEN1810 1790 CLOSE1:MS$="[210]EPLACE [198]ILE":GOSUB620:IFA$="N"THENCLOSE15:GOTO820 1800 PRINT#15,"S0:"+FI$:GOTO1770 1810 IFA>19THENGOSUB2060:GOTO820 1820 PRINT#1,CHR$(0)CHR$(192);:GOSUB420:F2%=-(FL%(34)=0):IFF2%=0THEN1850 1830 M=ME+34*18:FORI=MTOM+17:POKEI,0:NEXT:POKEM+7,7:POKEM+9,7 1840 FL%(34)=1:REM MAKE SURE QUOTE DEFINED 1850 S=0:FORI=32TO255:S=S+FL%(I):NEXT:S=1+2*S 1860 PRINT#1,CHR$(SAND255)CHR$(S/256); 1870 CC=32:I=0 1880 IFFL%(CC)=0THEN1930 1890 II=II+1:PRINTW$;W$(IIAND3); 1900 S%=3:M=ME+CC*18:FORI=0TO12STEP6:S=0:FORJ=0TO5:S=S+PEEK(M+I+J):NEXT 1910 L%=-(S>0):S%=S%-5*(L%>0):L%(CC,I/6)=L%:NEXT 1920 PRINT#1,CHR$(CC)CHR$(S%); 1930 CC=CC+1:IFCC<256THEN1880 1940 PRINT#1,CHR$(0);:CC=32 1950 IFFL%(CC)=0THEN2000 1960 II=II+1:PRINTW$;W$(IIAND3); 1970 M=ME+CC*18:FORI=0TO2:IFL%(CC,I)=0THENPRINT#1,CHR$(255);:GOTO1990 1980 FORJ=0TO5:PRINT#1,CHR$(PEEK(M+J));:NEXT 1990 M=M+6:NEXT 2000 CC=CC+1:IFCC<256THEN1950 2010 CLOSE1:GOSUB440:GOSUB2040:IFFL=0THENMS$="[198]INISHED.":GOSUB690 2020 IFF2%THENFL%(34)=0 2030 CLOSE15:GOTO820 2040 REM READ ERROR 2050 INPUT#15,A$,B$,C$,D$:A=VAL(A$) 2060 REM ENTRY IF ALREADY READ 2070 IFA<20THENFL=0:RETURN 2080 PRINT"[147][196]ISK [197]RROR:":PRINTA$" "B$" "C$" "D$" ":FL=1:CLOSE1:CLOSE15 2090 PRINT"[208]RESS [193]NY [203]EY TO [195]ONTINUE....":FORI=1TO10:GETA$:NEXT 2100 GETA$:IFA$=""THEN2100 2110 IFF2%THENFL%(34)=0 2120 RETURN 2130 REM SHFT P 2140 MS$="":POKE198,1:POKE631,34:PRINT"[147][208]RINT [215]HAT?" 2150 INPUTMS$:IFMS$=""THEN820 2160 PRINT"[147]":GOSUB80:IFLEN(MS$)>30THENMS$="[212]OO [204]ONG.":GOSUB690:GOTO820 2170 GOSUB240:GOSUB420:GOSUB520:GOTO820 2180 REM ASCII 2190 PRINTVT$(5)TAB(15)"[201]NPUT [203]EY" 2200 GETA$:IFA$=""THEN2200 2210 MS$="[193][211][195][201][201] ="+STR$(ASC(A$)):GOSUB690:GOTO750 2220 REM INITIALIZE 2230 LI$=" [166]++++++[166]":BO$=" [166][166][166][166][166][166][166][166]" 2240 CO$(0)="[151]":CO$(1)="":CO$(2)="[151]" 2250 POKE53280,6:POKE53281,0:CO$="[155]":PRINTCO$ 2260 DIMVT$(20):VT$(0)="":DEFFNHT(X)=7+X 2270 FORI=1TO20:VT$(I)=VT$(I-1)+"":NEXT 2280 SET$(0)="+":SET$(1)=" [146]":C0$=CHR$(0) 2290 CR$=CHR$(13):HR$=CHR$(8):TX$=CHR$(15):PB$=TX$+" ":QU$=CHR$(34) 2300 VIC=53248:POKEVIC+16,0:POKEVIC+27,0:POKEVIC+23,0:POKEVIC+28,0 2310 POKEVIC+29,0:SO=VIC+21:SC=VIC+39 2320 POKE2040,11:FORI=704TO767:READA:POKEI,A:NEXT 2330 DATA 0,0,0,0,0,0,0,24,0,0,24,0,0,24,0,0,24,0,0,24,0 2340 DATA 0,24,0,0,24,0,0,24,0,63,255,252,0,24,0,0,24,0,0,24,0 2350 DATA 0,24,0,0,24,0,0,24,0,0,24,0,0,24,0,0,0,0,0,0,0,0 2360 POKE650,128:REM REPEAT KEYS 2370 ME=49152-32*18:REM STARTS AT $C000 2380 BL$=" ":T$="" 2390 W$(0)="[188]":W$(1)="[190]":W$(2)="[187]":W$(3)="[172]":W$="" 2400 DIM FL%(255),L%(255,2),O%(255) 2410 GOSUB2430 2420 RETURN 2430 REM INIT FONT 2440 X=0:Y=0:C=32:CH=ME+18*C:FORI=0TO255:FL%(I)=0:NEXT 2450 RETURN